package indi.zhifa.recipe.bailan.framework.mysql.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.Serializable;
import java.util.List;
import java.util.function.Function;

public interface IZfDbService<T> extends IService<T> {
    <VO>Page<VO> page(IPage page, Wrapper<T> queryWrapper, Class<VO> cls);

    <VO>Page<VO> page(IPage page, Wrapper<T> queryWrapper, Class<VO> cls, Function<T,VO> convertor);

    <VO> List<VO> list(Wrapper<T> queryWrapper, Class<VO> cls);

    <VO> List<VO> list(Wrapper<T> queryWrapper, Class<VO> cls, Function<T,VO> convertor);

    T findOne(Wrapper<T> queryWrapper);

    boolean exist(Wrapper<T> queryWrapper);

    /**************下列接口可用于缓存操作****************/

    T check(Serializable pId);

    T savePull(Long pId,T pEntity);

    T updatePull(Long pId, T pEntity);

    T deleteById(Serializable pId);
}
